package com.potenzacd.project.controller;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.potenzacd.project.entity.Result;
import com.potenzacd.project.entity.StatusCode;
import com.potenzacd.project.pojo.ProductApprovalInfo;
import com.potenzacd.project.pojo.ProductInfo;
import com.potenzacd.project.service.impl.ProductInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author Cuidongdong
 * @since 2021-01-26
 */
@RestController
@CrossOrigin
@RequestMapping("/project/product-info")
public class ProductInfoRestController {
    @Autowired
    private ProductInfoService productInfoService;
    /**
     * 产品基本信息存为草稿(创建)
     * @param productInfo 要保存的信息
     */
    @PostMapping("/save4Draft")
    public Result save4Draft(@RequestBody ProductInfo productInfo){
        productInfoService.save4Draft(productInfo);
        return new Result(true, StatusCode.OK,"产品基本信息存为草稿成功",null);
    }


    /**
     * 产品基本信息提交审核(创建)
     * @param productInfo 要提交审核的信息
     */
    @PostMapping("/save4Approval")
    public Result save4Approval(@RequestBody ProductInfo productInfo){
        productInfoService.save4Approval(productInfo);
        return new Result(true, StatusCode.OK,"产品基本信息提交审核成功",null);
    }


    /**
     * 产品基本信息存为草稿(修改)
     * @param productInfo 要修改的信息
     */
    @PostMapping("/edit4Draft")
    public Result edit4Draft(@RequestBody ProductInfo productInfo){
        productInfoService.edit4Draft(productInfo);
        return new Result(true, StatusCode.OK,"产品基本信息提交审核成功",null);
    }


    /**
     * 产品基本信息提交审核(修改)
     * @param productInfo 要提交审核的信息
     */
    @PostMapping("/edit4Approval")
    public Result edit4Approval(@RequestBody ProductInfo productInfo){
        productInfoService.edit4Approval(productInfo);
        return new Result(true, StatusCode.OK,"产品基本信息提交审核成功",null);
    }



    /**
     * 产品基本信息审核通过
     * @param productApprovalInfo 审核记录
     */
    @PostMapping("/pass")
    public Result pass(@RequestBody ProductApprovalInfo productApprovalInfo){
        productInfoService.pass(productApprovalInfo);
        return new Result(true, StatusCode.OK,"产品基本信息审核通过",null);
    }


    /**
     * 产品基本信息审核不通过
     * @param productApprovalInfo 审核记录
     */
    @PostMapping("/notPass")
    public Result notPass(@RequestBody ProductApprovalInfo productApprovalInfo){
        productInfoService.notPass(productApprovalInfo);
        return new Result(true, StatusCode.OK,"产品基本信息审核不通过",null);
    }


    /**
     * 产品基本信息再次审核
     * 审核失败之后,进行信息的修订,之后提交审核
     * @param productInfo 要审核的信息
     */
    @PostMapping("/revise")
    public Result revise (@RequestBody ProductInfo productInfo){
        productInfoService.revise(productInfo);
        return new Result(true, StatusCode.OK,"产品基本信息再次审核",null);
    }

    /**
     * 发布
     * 产品基本信息
     * @param code
     */
    @PostMapping("/publish/{code}")
    public Result publish(@PathVariable String code){
        productInfoService.publish(code);
        return new Result(true, StatusCode.OK,"产品基本信息发布成功",null);
    }

    /**
     * 产品基本信息作废
     * @param code 要作废的信息标识
     */
    @PostMapping("/abort/{code}")
    public Result abort(@PathVariable String code){
        productInfoService.abort(code);
        return new Result(true, StatusCode.OK,"产品基本信息作废",null);
    }


    /**
     * 产品基本信息分页查询
     * @param page 分页的参数
     * @return 分页信息
     */
    @PostMapping("/findPage")
    public Page<ProductInfo> findPage(@RequestBody Page<ProductInfo> page){
        return productInfoService.findPage(page);
    }


    /**
     * 产品基本信息分页查询
     * @param current 每页多少条
     * @param size 当前页
     * @return 分页信息
     */
    @PostMapping("/findPage/{current}/{size}")
    public Result findPage(@PathVariable Integer current, @PathVariable Integer size){
        Page<ProductInfo> list = productInfoService.findPage(current, size);
        return new Result(true, StatusCode.OK,"产品基本信息分页查询",list);
    }


    /**
     * 产品基本信息查看详情
     * @param code 要查看的标识
     * @return 详情信息
     */
    @PostMapping("/detail/{code}")
    public Result detail(@PathVariable String code){
        ProductInfo detail = productInfoService.detail(code);
        return new Result(true, StatusCode.OK,"产品基本信息查看详情",detail);
    }
}

